//
//  WDSQLiteManager.h
//  ArtPage
//
//  Created by 王笛 on 16/9/20.
//  Copyright © 2016年 diwang. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "FMDB.h"

@interface WDSQLiteManager : NSObject

/** 数据库对象 */
@property(strong, nonatomic) FMDatabase *fmdb;
/** 数据集合 */
@property(strong, nonatomic)FMResultSet *fmrs;

/** 工具类单例 */
+ (WDSQLiteManager *)manager;

/**
 *  创建数据库表
 *
 *  @param tableName 表名（模型类名）
 */
- (void)creatTable:(NSString *)tableName WithPrimaryKey:(NSArray *)primaryKey;

/**
 *  插入数据（字典数据）
 *
 *  @param keyValues 字典
 *  @param tableName 表名
 */
- (void)insertWithKeyValues:(NSDictionary *)keyValues toTable:(NSString *)tableName;

/**
 *  插入数据（模型数据）
 *
 *  @param tableName 表名
 */
- (void)insertWithTable:(NSString *)tableName andModel:(NSObject *)model;

/**
 *  插入数据（字典数组数据）
 *
 *  @param dictArr 字典数组
 *  @param tableName 表名
 */
- (void)insertWithDictArr:(NSArray *)dictArr toTable:(NSString *)tableName;

/**
 *  插入数据（模型数组数据）
 *
 *  @param tableName 表名
 */
- (void)insertWithTable:(NSString *)tableName andModelArr:(NSArray *)modelArr;

/**
 *  更新数据（传入字典）
 *
 *  @param tableName 表名
 *  @param keyValues 字典
 */
- (void)updateWithTable:(NSString *)tableName setKeyValues:(NSDictionary *)keyValues;

/**
 *  更新数据（传入模型）
 *
 *  @param tableName 表名
 *  @param model     模型
 */
- (void)updateWithTable:(NSString *)tableName andModel:(NSObject *)model;

/**
 *  更新数据（条件更新）
 *
 *  @param tableName 表名
 *  @param keyValues 更新字段
 *  @param condition 条件字典（主键）
 */
- (void)updateWithTable:(NSString *)tableName setKeyValues:(NSDictionary *)keyValues whereCondition:(NSDictionary *)condition;

/**
 *  查询所有数据 返回字典数组
 *
 *  @param tableName 表名
 *
 *  @return 字典数组
 */
- (NSArray *)selectAllfromTable:(NSString *)tableName;

/**
 *  查询所有数据 返回模型数组
 *
 *  @param tableName 表名
 *
 *  @return 模型数组
 */
- (NSArray *)selectWithTable:(NSString *)tableName;

/**
 *  条件查询（传入字典）
 *
 *  @param keyTypes  查询字段
 *  @param tableName 表名
 *  @param condition 查询条件
 *
 *  @return 字典数组
 */
- (NSArray *)selectWithKeyTypes:(NSDictionary *)keyTypes fromTable:(NSString *)tableName whereCondition:(NSDictionary *)condition;

/**
 *  条件查询（传入模型）
 *
 *  @param tableName 表名
 *  @param condition 查询条件
 *
 *  @return 模型数组
 */
- (NSArray *)selectWithTable:(NSString *)tableName whereCondition:(NSDictionary *)condition;

/**
 *  条件删除
 *
 *  @param tableName 表名
 *  @param condition 删除条件
 */
- (void)deleteWithTable:(NSString *)tableName whereCondition:(NSDictionary *)condition;

/**
 *  清空表
 *
 *  @param tableName 表名
 */
- (void)clearTable:(NSString *)tableName;


@end
